<?php

require_once('to/Album.php');
require_once('fotosDAO.php');

class AlbumsDAO {
    const SEL_TOP3_POR_TIPO = "SELECT * FROM album WHERE status='A' AND tipo='%s' ORDER BY fechaPublicacion DESC, albumid DESC LIMIT 3";
    const SEL_ALBUM_POR_ID = "SELECT * FROM album WHERE status='A' AND albumid = %d";
    const SEL_TOP25_POR_TIPO = "SELECT * FROM album WHERE status='A' AND tipo='%s' ORDER BY fechaPublicacion DESC, albumid DESC LIMIT 25";

    public static function getTop25Albums($tipo){
        $sSql = self::SEL_TOP25_POR_TIPO;

        $DB = DBFunctions::getInstance();
        $arrFotos = $DB->execSelect($sSql, array($tipo));

        return self::populateFrontPage($arrFotos);
    }

    public static function getAlbumPorId($albumid){
        $sSql = self::SEL_ALBUM_POR_ID;

        $DB = DBFunctions::getInstance();
        $arrFotos = $DB->execSelect($sSql, array($albumid));

        return self::populate($arrFotos);
    }


    public static function getTop3Albums($tipo) {
        $sSql = self::SEL_TOP3_POR_TIPO;

        $DB = DBFunctions::getInstance();
        $arrFotos = $DB->execSelect($sSql, array($tipo));

        return self::populateFrontPage($arrFotos);
    }

    private static function populateFrontPage($arrAlbums) {
        $objAlbums = array();

        foreach($arrAlbums as $A){
            $objAlbum = new Album();
            $objAlbum->setAlbumId($A["albumid"]);
            $objAlbum->setTitulo(isset($A["titulo"]) ? $A["titulo"] : "");

            $fotos = new FotosDAO();
//		echo "<br>".$A["albumid"];
            $foto_principal = $fotos->getFotoPorAlbum($A["albumid"]);

            $objAlbum->setFotoPrincipal($foto_principal[0]->getFoto());

            array_push($objAlbums, $objAlbum);
        }
        return $objAlbums;
    }

    /*This function get's the result array and builds an advertiser array object
      * @param array Advertisers result
      * @returns array with Advertisers objects */
    private static function populate($arrAlbums){

        $objAlbums = array();

        foreach($arrAlbums as $A){
            $objAlbum = new Album();
            $objAlbum->setAlbumId($A["albumid"]);
            $objAlbum->setTitulo($A["titulo"]);
            $objAlbum->setDescripcion($A["descripcion"]);
            $objAlbum->setFechaPublicacion($A["fechaPublicacion"]);
            $objAlbum->setFechaCreado($A["fechaCreado"]);
            $objAlbum->setCreadoPor($A["creadoPor"]);
            $objAlbum->setStatus($A["status"]);
            $objAlbum->setTipo($A["tipo"]);

            $fotos = new FotosDAO();
            $foto_album = $fotos->getFotosPorAlbum($A["albumid"]);
            $objAlbum->setFotoPrincipal($foto_album);

            array_push($objAlbums, $objAlbum);
        }
        return $objAlbums;
    }
}
